package arrays

// MapTry 对数组中的每个元素应用函数，返回一个新数组和可能的错误
func MapTry[T, R any](array []T, fn func(T, int, []T) (R, error)) ([]R, error) {
	result := make([]R, 0, len(array))
	for i, v := range array {
		r, e := fn(v, i, array)
		if e != nil {
			return nil, e
		}
		result = append(result, r)
	}
	return result, nil
}
